Mặc dù chúng ta hình dung dữ liệu dưới dạng lưới 2D để thuận tiện cho việc tính toán, phần cứng chỉ thấy một luồng 1D liên tục các byte. Hiểu được "thực tại tuyến tính" này là điều kiện tiên quyết để triển khai các mẫu giảm dần theo hàng mẫu giảm dần—ví dụ như tìm giá trị lớn nhất hoặc tổng của các số mũ.
1. Nguyên lý "Phẳng tuyến tính"
Mọi ma trận đa chiều đều được lưu trữ tuần tự về mặt vật lý. Để triển khai $\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$, chúng ta phải xác định đoạn tuyến tính biểu diễn một hàng và thực hiện duyệt qua để tính giá trị lớn nhất và tổng.
2. Độ ổn định số học
Tại sao softmax cần được ổn định? Các giá trị đầu vào cao khiến $e^{x}$ bùng nổ. Chúng ta ổn định bằng cách: $$\text{exp}(x_i - \text{max}(x))$$ Điều này buộc người thiết kế kernel phải thực hiện giảm dần tuyến tính hai lần (tìm Max rồi mới tính Tổng) trước khi chuẩn hóa cuối cùng.
3. Kiểm chứng thông qua các hàng ngắn
Khi phát triển các kernel Triton, chúng ta sử dụng kiểm thử chỉ các hàng ngắn (ví dụ: chiều rộng 16) để đảm bảo phép toán con trỏ tuyến tính của chúng ta ghi nhận đúng mọi phần tử trước khi mở rộng sang khối lượng công việc sản xuất.